import addressbook_pb2
import copyInf_pb2


print("addressbook_pb2.Person",addressbook_pb2.Person)

p = addressbook_pb2.Person()
p.name = "john"
#[{'number':155,'type':0},{'number':156,'type':1}]

print("person:",p,type(p),"p.phones",type(p.phones))

c = copyInf_pb2.CopyInfos()

c.descs.append("Hello") #普通类型的 repeated 修饰符就是普通list

info = c.infos.add() #创建复合类型,需要通过add方法添加
info.code = 1001
info.progress = 10
info.desc = "副本描述"

info = c.infos.add() #创建复合类型,需要通过add方法添加
info.code = 1002
info.progress = 1
info.desc = "副本描述1"

print("c.infos",c.infos,type(c.infos))

#print(c.infos[0],str(c))

print("c.SerializeToString",type(c))
byteStr = c.SerializeToString() #将message序列化并返回str类型的结果（str类型只是二进制数据的一个容器而已，而不是文本内容）。如果message没有初始化，抛出message.EncodeError异常。 
print("byteStr",type(byteStr))
byteStr = c.SerializePartialToString() #将message序列化并返回str类型的结果，但是不检查message是否初始化。 
print("s",type(byteStr),dir(c))

#ParseFromString(data)：从给定的二进制str解析得到message对象。